package com.bsj.power.system.service;


import com.bsj.power.common.config.global.JsonResult;
import com.bsj.power.common.def.dto.menu.MenuDTO;
import com.bsj.power.common.def.dto.menu.MenuSearchDTO;
import com.bsj.power.common.def.entity.menu.Menu;
import com.bsj.power.common.def.vo.sys.menu.MenuTreeVO;
import com.bsj.power.common.def.vo.sys.menu.MenuVO;

import java.util.List;

/***
 * @description MenuService
 * @author LiJiaXin
 * @version 1.0.0
 * @time 2024/1/12 16:36
 **/
public interface MenuService {

    /**
     * 添加权限
     *
     * @param menuDTO
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/9/11 12:06
     */
    JsonResult addMenu(MenuDTO menuDTO);

    /**
     * 删除权限
     *
     * @param menuId
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/9/11 12:06
     */
    JsonResult deleteMenu(Integer menuId);

    /**
     * 修改权限
     *
     * @param menuDTO
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/9/11 12:06
     */
    JsonResult updateMenu(MenuDTO menuDTO);

    /**
     * 根据权限id获取权限信息
     *
     * @param menuId
     * @return com.bsj.power.common.def.vo.sys.menu.MenuVO
     * @author ljx
     * @time 2024/9/11 12:06
     */
    MenuVO getMenuInfoById(Integer menuId);

    /**
     * 权限分页
     *
     * @param menuSearchDTO
     * @return com.bsj.power.common.config.global.JsonResult<java.util.List<com.bsj.power.common.def.vo.sys.menu.MenuVO>>
     * @author ljx
     * @time 2024/9/11 12:07
     */
    JsonResult<List<MenuVO>> pageMenu(MenuSearchDTO menuSearchDTO);

    /**
     * 获取权限树
     *
     * @return java.util.List<com.bsj.power.common.def.vo.sys.menu.MenuTreeVO>
     * @author ljx
     * @time 2024/9/11 12:07
     */
    List<MenuTreeVO> getMenuTree();

    /**
     * 树结构搭建
     *
     * @param menus
     * @return java.util.List<com.bsj.power.common.def.vo.sys.menu.MenuTreeVO>
     * @author ljx
     * @time 2024/9/11 12:07
     */
    List<MenuTreeVO> structureErection(List<Menu> menus);

}
